﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
using Chilis.Franquicias.EnEntidad;
using Chilis.Franquicias.DaDatos.Helper;

namespace Chilis.Franquicias.DaDatos
{
    public class SolicitudDaDatos
    {
        private Database oDatabase = EnterpriseLibraryContainer.Current.GetInstance<Database>(Conexion.cnsSql);
        
        public int CrearSolicitud(FQ_Solicitud oFQ_Solicitud)
        {
            int resultado = oDatabase.ExecuteNonQuery(Procedimientos.USP_INS_FQ_SOLICITUD,
                oFQ_Solicitud.FQ_Candidato.FQ_Candidato_ID,
                oFQ_Solicitud.FQ_ObservacionSolicitud.FQ_ObservacionSolicitud_ID,
                oFQ_Solicitud.FQ_EstadoSolicitud.FQ_EstadoSolicitud_ID,
                oFQ_Solicitud.FQ_ReferenciaBancaria.FQ_ReferenciaBancaria_ID,
                oFQ_Solicitud.FQ_ReferenciaComercial.FQ_ReferenciaComercial_ID,
                oFQ_Solicitud.FQ_ReferenciaLaboral.FQ_ReferenciaLaboral_ID,
                oFQ_Solicitud.FQ_InformacionPatrimonialPos.FQ_InformacionPatrimonialPos_ID,
                oFQ_Solicitud.FQ_InformacionPatrimonialNeg.FQ_InformacionPatrimonialNeg_ID,
                oFQ_Solicitud.FQ_Anexo.FQ_Anexo_ID,
                oFQ_Solicitud.Fecha,
                oFQ_Solicitud.FechaEntrevista,
                oFQ_Solicitud.Resumen,
                oFQ_Solicitud.Descripcion
            );
            return resultado;
        }

        public int ActualizarSolicitud(FQ_Solicitud oFQ_Solicitud)
        {
            int resultado = oDatabase.ExecuteNonQuery(Procedimientos.USP_UPD_FQ_SOLICITUD,
                oFQ_Solicitud.FQ_Solicitud_ID,
                oFQ_Solicitud.FQ_Candidato.FQ_Candidato_ID,
                oFQ_Solicitud.FQ_ObservacionSolicitud.FQ_ObservacionSolicitud_ID,
                oFQ_Solicitud.FQ_EstadoSolicitud.FQ_EstadoSolicitud_ID,
                oFQ_Solicitud.FQ_ReferenciaBancaria.FQ_ReferenciaBancaria_ID,
                oFQ_Solicitud.FQ_ReferenciaComercial.FQ_ReferenciaComercial_ID,
                oFQ_Solicitud.FQ_ReferenciaLaboral.FQ_ReferenciaLaboral_ID,
                oFQ_Solicitud.FQ_InformacionPatrimonialPos.FQ_InformacionPatrimonialPos_ID,
                oFQ_Solicitud.FQ_InformacionPatrimonialNeg.FQ_InformacionPatrimonialNeg_ID,
                oFQ_Solicitud.FQ_Anexo.FQ_Anexo_ID,
                oFQ_Solicitud.FechaEntrevista,
                oFQ_Solicitud.Resumen,
                oFQ_Solicitud.Descripcion
            );
            return resultado;
        }

        public ListaFQ_EstadoSolicitud ListaEstadoSolicitud()
        {
            ListaFQ_EstadoSolicitud oListaFQ_EstadoSolicitud = new ListaFQ_EstadoSolicitud();
            using (IDataReader oIDataReader = oDatabase.ExecuteReader(Procedimientos.USP_SEL_FQ_ESTADO_SOLICITUD))
            {
                FQ_EstadoSolicitud oFQ_EstadoSolicitud = new FQ_EstadoSolicitud();
                int indiceFQ_EstadoSolicitud_ID = oIDataReader.GetOrdinal("FQ_EstadoSolicitud_ID");
                int indiceEstadoSolicitud = oIDataReader.GetOrdinal("EstadoSolicitud");

                while (oIDataReader.Read())
                {
                    oFQ_EstadoSolicitud = new FQ_EstadoSolicitud();
                    oFQ_EstadoSolicitud.FQ_EstadoSolicitud_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_EstadoSolicitud_ID]);
                    oFQ_EstadoSolicitud.EstadoSolicitud = DataUtil.DbValueToDefault<String>(oIDataReader[indiceEstadoSolicitud]);
                    oListaFQ_EstadoSolicitud.Add(oFQ_EstadoSolicitud);
                }
            }
            return oListaFQ_EstadoSolicitud;
        }

        public ListaFQ_Solicitud ListaEstadosSolicitus_Candidato(FQ_Solicitud oFQ_Solicitud, string sortType, int maximumRows, int startRowIndex, out int Total)
        {
            ListaFQ_Solicitud oListaFQ_Solicitud = new ListaFQ_Solicitud();
            DbCommand oDbCommand = oDatabase.GetStoredProcCommand(Procedimientos.USP_SEL_FQ_ESTADOSSOLICITUS_CANDIDATO);
            oDatabase.AddInParameter(oDbCommand, "@Nombre", DbType.String, oFQ_Solicitud.FQ_Candidato.Nombre);
            oDatabase.AddInParameter(oDbCommand, "@numeroDocumento", DbType.String, oFQ_Solicitud.FQ_Candidato.NumeroDocumento);
            oDatabase.AddInParameter(oDbCommand, "@FQ_EstadoSolicitud_ID", DbType.Int32, oFQ_Solicitud.FQ_EstadoSolicitud.FQ_EstadoSolicitud_ID);
            oDatabase.AddInParameter(oDbCommand, "@TipoCandidato_ID", DbType.Int32, oFQ_Solicitud.FQ_Candidato.FQ_TipoCandidato.TipoCandidato_ID);
            oDatabase.AddInParameter(oDbCommand, "@sortType", DbType.String, sortType);
            oDatabase.AddInParameter(oDbCommand, "@maximumRows", DbType.Int32, maximumRows);
            oDatabase.AddInParameter(oDbCommand, "@startRowIndex", DbType.Int32, startRowIndex);
            oDatabase.AddOutParameter(oDbCommand, "@Total", DbType.Int32, 10);
            using (IDataReader oIDataReader = oDatabase.ExecuteReader(oDbCommand))
            {
                int indiceFQ_Solicitud_ID = oIDataReader.GetOrdinal("FQ_Solicitud_ID");
                int indiceEstadoSolicitud = oIDataReader.GetOrdinal("EstadoSolicitud");
                int indicenumeroDocumento = oIDataReader.GetOrdinal("numeroDocumento");
                int indiceCandidato = oIDataReader.GetOrdinal("Candidato");
                int indicedireccion = oIDataReader.GetOrdinal("direccion");
                int indicetelefonoFijo = oIDataReader.GetOrdinal("telefonoFijo");
                int indicetelefonoMovil = oIDataReader.GetOrdinal("telefonoMovil");
                int indicecorreoElectronico = oIDataReader.GetOrdinal("correoElectronico");
                while (oIDataReader.Read())
                {
                    oFQ_Solicitud = new FQ_Solicitud();
                    oFQ_Solicitud.FQ_Candidato = new FQ_Candidato();
                    oFQ_Solicitud.FQ_EstadoSolicitud = new FQ_EstadoSolicitud();
                    oFQ_Solicitud.FQ_Solicitud_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_Solicitud_ID]);
                    oFQ_Solicitud.FQ_EstadoSolicitud.EstadoSolicitud = DataUtil.DbValueToDefault<String>(oIDataReader[indiceEstadoSolicitud]);
                    oFQ_Solicitud.FQ_Candidato.NumeroDocumento = DataUtil.DbValueToDefault<String>(oIDataReader[indicenumeroDocumento]);
                    oFQ_Solicitud.FQ_Candidato.Nombre = DataUtil.DbValueToDefault<String>(oIDataReader[indiceCandidato]);
                    oFQ_Solicitud.FQ_Candidato.Direccion = DataUtil.DbValueToDefault<String>(oIDataReader[indicedireccion]);
                    oFQ_Solicitud.FQ_Candidato.TelefonoFijo = DataUtil.DbValueToDefault<String>(oIDataReader[indicetelefonoFijo]);
                    oFQ_Solicitud.FQ_Candidato.TelefonoMovil = DataUtil.DbValueToDefault<String>(oIDataReader[indicetelefonoMovil]);
                    oFQ_Solicitud.FQ_Candidato.correoElectronico = DataUtil.DbValueToDefault<String>(oIDataReader[indicecorreoElectronico]);
                    oListaFQ_Solicitud.Add(oFQ_Solicitud);
                }
            }
            Total = Convert.ToInt32(oDatabase.GetParameterValue(oDbCommand, "@Total"));
            return oListaFQ_Solicitud;
        }

        public int CrearCandidato(FQ_Candidato oFQ_Candidato)
        {
            int resultado = oDatabase.ExecuteNonQuery(Procedimientos.USP_INS_FQ_CANDIDATO,
                oFQ_Candidato.FQ_TipoCandidato.TipoCandidato_ID,
                oFQ_Candidato.FQ_TipoDocumento.TipoDocumento_ID,
                oFQ_Candidato.FQ_Distrito.FQ_Distrito_ID,
                oFQ_Candidato.NumeroDocumento,
                oFQ_Candidato.Nombre,
                oFQ_Candidato.Apellidos,
                oFQ_Candidato.FechaNacimiento,
                oFQ_Candidato.SectorEconomico,
                oFQ_Candidato.Direccion,
                oFQ_Candidato.TelefonoFijo,
                oFQ_Candidato.TelefonoMovil,
                oFQ_Candidato.NumeroFax,
                oFQ_Candidato.correoElectronico,
                oFQ_Candidato.paginaWeb
            );
            return resultado;
        }

        public FQ_Solicitud SeleccionarCandidato_Nueva_Solicitud(Int32 FQ_Candidato_ID)
        {
            FQ_Solicitud oFQ_Solicitud = new FQ_Solicitud();
            using (IDataReader oIDataReader = oDatabase.ExecuteReader(Procedimientos.USP_SEL_FQ_CANDIDATO_NUEVASOLICITUD,
                FQ_Candidato_ID
            ))
            {
                int indiceFQ_Candidato_ID = oIDataReader.GetOrdinal("FQ_Candidato_ID");
                int indicenumeroDocumento = oIDataReader.GetOrdinal("numeroDocumento");
                int indiceNombre = oIDataReader.GetOrdinal("Nombre");
                int indiceapellidos = oIDataReader.GetOrdinal("apellidos");
                int indicedireccion = oIDataReader.GetOrdinal("direccion");
                if (oIDataReader.Read())
                {
                    oFQ_Solicitud = new FQ_Solicitud();
                    oFQ_Solicitud = new FQ_Solicitud();
                    oFQ_Solicitud.FQ_Candidato = new FQ_Candidato();
                    oFQ_Solicitud.FQ_Candidato.FQ_Candidato_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_Candidato_ID]);
                    oFQ_Solicitud.FQ_Candidato.NumeroDocumento = DataUtil.DbValueToDefault<String>(oIDataReader[indicenumeroDocumento]);
                    oFQ_Solicitud.FQ_Candidato.Nombre = DataUtil.DbValueToDefault<String>(oIDataReader[indiceNombre]);
                    oFQ_Solicitud.FQ_Candidato.Apellidos = DataUtil.DbValueToDefault<String>(oIDataReader[indiceapellidos]);
                    oFQ_Solicitud.FQ_Candidato.Direccion = DataUtil.DbValueToDefault<String>(oIDataReader[indicedireccion]);                    
                }
            }
            return oFQ_Solicitud;
        }


        public FQ_Solicitud SeleccionarSolicitud(Int32 FQ_Solicitud_ID)
        {
            FQ_Solicitud oFQ_Solicitud = new FQ_Solicitud();
            using (IDataReader oIDataReader = oDatabase.ExecuteReader(Procedimientos.USP_SEL_FQ_SOLICITUD_POR_ID,
                FQ_Solicitud_ID
            ))
            {
                int indiceFQ_Solicitud_ID = oIDataReader.GetOrdinal("FQ_Solicitud_ID");
                int indiceFQ_EstadoSolicitud_ID = oIDataReader.GetOrdinal("FQ_EstadoSolicitud_ID");
                int indicefechaSolicitud = oIDataReader.GetOrdinal("fechaSolicitud");
                int indicefechaEntrevista = oIDataReader.GetOrdinal("fechaEntrevista");
                int indiceResumenSolicitud = oIDataReader.GetOrdinal("ResumenSolicitud");
                int indicedescripcionSolicitud = oIDataReader.GetOrdinal("descripcionSolicitud");
                int indiceFQ_Candidato_ID = oIDataReader.GetOrdinal("FQ_Candidato_ID");
                int indiceNombreCandidato = oIDataReader.GetOrdinal("NombreCandidato");
                int indiceapellidos = oIDataReader.GetOrdinal("apellidos");
                int indicenumeroDocumento = oIDataReader.GetOrdinal("numeroDocumento");
                int indicedireccionCandidato = oIDataReader.GetOrdinal("direccionCandidato");
                int indiceFQ_ReferenciaLaboral_ID = oIDataReader.GetOrdinal("FQ_ReferenciaLaboral_ID");
                int indicenombreEmpresa = oIDataReader.GetOrdinal("nombreEmpresa");
                int indicecargoReferenciaLaboral = oIDataReader.GetOrdinal("cargoReferenciaLaboral");
                int indiceinicioTiempoServicio = oIDataReader.GetOrdinal("inicioTiempoServicio");
                int indicefinTiempoServicio = oIDataReader.GetOrdinal("finTiempoServicio");
                int indicesueldoReferenciaLaboral = oIDataReader.GetOrdinal("sueldoReferenciaLaboral");
                int indicedireccionReferenciaLaboral = oIDataReader.GetOrdinal("direccionReferenciaLaboral");
                int indicetelefonoReferenciaLaboral = oIDataReader.GetOrdinal("telefonoReferenciaLaboral");
                int indicecorreoElectronicoReferenciaLaboral = oIDataReader.GetOrdinal("correoElectronicoReferenciaLaboral");                
                int indiceFQ_InformacionPatrimonialPos_ID = oIDataReader.GetOrdinal("FQ_InformacionPatrimonialPos_ID");
                int indicectsBancarias = oIDataReader.GetOrdinal("ctsBancarias");
                int indiceacciones = oIDataReader.GetOrdinal("acciones");
                int indiceinmuebles = oIDataReader.GetOrdinal("inmuebles");
                int indicevehiculos = oIDataReader.GetOrdinal("vehiculos");
                int indiceotrosPatrimonialPos = oIDataReader.GetOrdinal("otrosPatrimonialPos");
                int indiceFQ_InformacionPatrimonialNeg_ID = oIDataReader.GetOrdinal("FQ_InformacionPatrimonialNeg_ID");
                int indicehipotecas = oIDataReader.GetOrdinal("hipotecas");
                int indicecreditos = oIDataReader.GetOrdinal("creditos");
                int indiceprestamos = oIDataReader.GetOrdinal("prestamos");
                int indicectsxpagar = oIDataReader.GetOrdinal("ctsxpagar");
                int indiceotrosPatrimonialNeg = oIDataReader.GetOrdinal("otrosPatrimonialNeg");
                int indiceFQ_ReferenciaBancaria_ID = oIDataReader.GetOrdinal("FQ_ReferenciaBancaria_ID");
                int indicenombreReferenciaBancaria = oIDataReader.GetOrdinal("nombreReferenciaBancaria");
                int indicetipoCuenta = oIDataReader.GetOrdinal("tipoCuenta");
                int indicesucursal = oIDataReader.GetOrdinal("sucursal");
                int indicesectorista = oIDataReader.GetOrdinal("sectorista");

                int indiceFQ_ReferenciaComercial_ID = oIDataReader.GetOrdinal("FQ_ReferenciaComercial_ID");
                int indicenombreEmpresaReferenciaComercial = oIDataReader.GetOrdinal("nombreEmpresaReferenciaComercial");
                int indicedireccionReferenciaComercial = oIDataReader.GetOrdinal("direccionReferenciaComercial");
                int indicecontactoReferenciaComercial = oIDataReader.GetOrdinal("contactoReferenciaComercial");

                int indiceFQ_Anexo_ID = oIDataReader.GetOrdinal("FQ_Anexo_ID");
                int indicenomnombreArchivo = oIDataReader.GetOrdinal("nombreArchivo");
                int indicenombreDescriptivo = oIDataReader.GetOrdinal("nombreDescriptivo");
                int indicearchivoFisico = oIDataReader.GetOrdinal("archivoFisico");

                int indiceFQ_ObservacionSolicitud_ID = oIDataReader.GetOrdinal("FQ_ObservacionSolicitud_ID");
                int indicefechaRegistroObservacionSolicitud = oIDataReader.GetOrdinal("fechaRegistroObservacionSolicitud");
                int indicecomentarioObservacionSolicitud = oIDataReader.GetOrdinal("comentarioObservacionSolicitud");
                int indiceplazo = oIDataReader.GetOrdinal("plazo");
                int indiusuarioRegistro = oIDataReader.GetOrdinal("usuarioRegistro");
                if (oIDataReader.Read())
                {
                    oFQ_Solicitud = new FQ_Solicitud();
                    oFQ_Solicitud.FQ_Candidato = new FQ_Candidato();
                    oFQ_Solicitud.FQ_EstadoSolicitud = new FQ_EstadoSolicitud();
                    oFQ_Solicitud.FQ_ReferenciaLaboral = new FQ_ReferenciaLaboral();
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos = new FQ_InformacionPatrimonialPos();
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg = new FQ_InformacionPatrimonialNeg();
                    oFQ_Solicitud.FQ_ReferenciaBancaria = new FQ_ReferenciaBancaria();
                    oFQ_Solicitud.FQ_ReferenciaComercial = new FQ_ReferenciaComercial();
                    oFQ_Solicitud.FQ_Anexo = new FQ_Anexo();
                    oFQ_Solicitud.FQ_ObservacionSolicitud = new FQ_ObservacionSolicitud();

                    oFQ_Solicitud.FQ_Solicitud_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_Solicitud_ID]);
                    oFQ_Solicitud.FQ_EstadoSolicitud.FQ_EstadoSolicitud_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_EstadoSolicitud_ID]);
                    oFQ_Solicitud.Fecha = DataUtil.DbValueToDefault<DateTime>(oIDataReader[indicefechaSolicitud]);
                    oFQ_Solicitud.FechaEntrevista = DataUtil.DbValueToDefault<DateTime>(oIDataReader[indicefechaEntrevista]);
                    oFQ_Solicitud.Resumen = DataUtil.DbValueToDefault<String>(oIDataReader[indiceResumenSolicitud]);
                    oFQ_Solicitud.Descripcion = DataUtil.DbValueToDefault<String>(oIDataReader[indicedescripcionSolicitud]);
                    oFQ_Solicitud.FQ_Candidato.FQ_Candidato_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_Candidato_ID]);
                    oFQ_Solicitud.FQ_Candidato.Nombre = DataUtil.DbValueToDefault<String>(oIDataReader[indiceNombreCandidato]);
                    oFQ_Solicitud.FQ_Candidato.Apellidos = DataUtil.DbValueToDefault<String>(oIDataReader[indiceapellidos]);
                    oFQ_Solicitud.FQ_Candidato.NumeroDocumento = DataUtil.DbValueToDefault<String>(oIDataReader[indicenumeroDocumento]);
                    oFQ_Solicitud.FQ_Candidato.Direccion = DataUtil.DbValueToDefault<String>(oIDataReader[indicedireccionCandidato]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.FQ_ReferenciaLaboral_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_ReferenciaLaboral_ID]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.NombreEmpresa = DataUtil.DbValueToDefault<String>(oIDataReader[indicenombreEmpresa]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.Cargo = DataUtil.DbValueToDefault<String>(oIDataReader[indicecargoReferenciaLaboral ]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.InicioTiempoServicio = DataUtil.DbValueToDefault<DateTime>(oIDataReader[indiceinicioTiempoServicio]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.FinTiempoServicio = DataUtil.DbValueToDefault<DateTime>(oIDataReader[indicefinTiempoServicio]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.Sueldo = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indicesueldoReferenciaLaboral]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.Direccion = DataUtil.DbValueToDefault<String>(oIDataReader[indicedireccionReferenciaLaboral]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.Telefono = DataUtil.DbValueToDefault<String>(oIDataReader[indicetelefonoReferenciaLaboral]);
                    oFQ_Solicitud.FQ_ReferenciaLaboral.correoElectronico = DataUtil.DbValueToDefault<String>(oIDataReader[indicecorreoElectronicoReferenciaLaboral]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos.FQ_InformacionPatrimonialPos_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_InformacionPatrimonialPos_ID ]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos.CtsBancarias = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indicectsBancarias]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos.Acciones = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indiceacciones]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos.Inmuebles = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indiceinmuebles ]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos.Vehiculos = DataUtil.DbValueToDefault<Decimal>(oIDataReader[ indicevehiculos ]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialPos.Otros = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indiceotrosPatrimonialPos]);                    
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg.FQ_InformacionPatrimonialNeg_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_InformacionPatrimonialNeg_ID]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg.Hipotecas = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indicehipotecas]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg.Creditos = DataUtil.DbValueToDefault<Decimal>(oIDataReader[ indicecreditos]); 
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg.Prestamos = DataUtil.DbValueToDefault<Decimal>(oIDataReader[ indiceprestamos]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg.Ctsxpagar = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indicectsxpagar]);
                    oFQ_Solicitud.FQ_InformacionPatrimonialNeg.Otros = DataUtil.DbValueToDefault<Decimal>(oIDataReader[indiceotrosPatrimonialNeg]);
                    oFQ_Solicitud.FQ_ReferenciaBancaria.FQ_ReferenciaBancaria_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_ReferenciaBancaria_ID]);
                    oFQ_Solicitud.FQ_ReferenciaBancaria.Nombre = DataUtil.DbValueToDefault<String>(oIDataReader[indicenombreReferenciaBancaria]);
                    oFQ_Solicitud.FQ_ReferenciaBancaria.TipoCuenta = DataUtil.DbValueToDefault<String>(oIDataReader[indicetipoCuenta]);
                    oFQ_Solicitud.FQ_ReferenciaBancaria.Sucursal = DataUtil.DbValueToDefault<String>(oIDataReader[indicesucursal ]);
                    oFQ_Solicitud.FQ_ReferenciaBancaria.Sectorista = DataUtil.DbValueToDefault<String>(oIDataReader[indicesectorista]);
                    oFQ_Solicitud.FQ_ReferenciaComercial.FQ_ReferenciaComercial_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_ReferenciaComercial_ID]);
                    oFQ_Solicitud.FQ_ReferenciaComercial.NombreEmpresa = DataUtil.DbValueToDefault<String>(oIDataReader[indicenombreEmpresaReferenciaComercial]);
                    oFQ_Solicitud.FQ_ReferenciaComercial.Direccion = DataUtil.DbValueToDefault<String>(oIDataReader[indicedireccionReferenciaComercial]);
                    oFQ_Solicitud.FQ_ReferenciaComercial.Contacto = DataUtil.DbValueToDefault<String>(oIDataReader[indicecontactoReferenciaComercial]);
                    oFQ_Solicitud.FQ_Anexo.FQ_Anexo_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_Anexo_ID]);
                    oFQ_Solicitud.FQ_Anexo.NombreArchivo = DataUtil.DbValueToDefault<String>(oIDataReader[indicenomnombreArchivo]);
                    oFQ_Solicitud.FQ_Anexo.NombreDescriptivo = DataUtil.DbValueToDefault<String>(oIDataReader[indicenombreDescriptivo]);
                    oFQ_Solicitud.FQ_Anexo.ArchivoFisico = DataUtil.DbValueToDefault<String>(oIDataReader[indicearchivoFisico]);
                    oFQ_Solicitud.FQ_ObservacionSolicitud.FQ_ObservacionSolicitud_ID = DataUtil.DbValueToDefault<Int32>(oIDataReader[indiceFQ_ObservacionSolicitud_ID]);
                    oFQ_Solicitud.FQ_ObservacionSolicitud.FechaRegistro = DataUtil.DbValueToDefault<DateTime>(oIDataReader[indicefechaRegistroObservacionSolicitud]); 
                    oFQ_Solicitud.FQ_ObservacionSolicitud.Comentario = DataUtil.DbValueToDefault<String>(oIDataReader[indicecomentarioObservacionSolicitud]);
                    oFQ_Solicitud.FQ_ObservacionSolicitud.Plazo = DataUtil.DbValueToDefault<DateTime>(oIDataReader[indiceplazo]);
                    oFQ_Solicitud.FQ_ObservacionSolicitud.UsuarioRegistro  = DataUtil.DbValueToDefault<String>(oIDataReader[indiusuarioRegistro]);
                }
            }
            return oFQ_Solicitud;
        }    
    }
}
